{ "cells": [ { "cell_type": "markdown", "source": [ "# Complex Sensitive Features\n", "\n", "The [Simple Pipeline notebook](./Simple Pipeline.ipynb) covered the basic use of the `fairret` library. Now, we'll dive a bit deeper into the sensitive features tensor, including a mix of discrete and continuous features.\n", "\n", "We'll skim over the data loading and model definition this time." ], "metadata": { "collapsed": false }, "id": "4177da6e00f826" }, { "cell_type": "markdown", "source": [ "## Data prep" ], "metadata": { "collapsed": false }, "id": "2336f02f615afcb1" }, { "cell_type": "code", "execution_count": 1, "outputs": [], "source": [ "from folktables import ACSDataSource, ACSIncome, generate_categories\n", "\n", "data_source = ACSDataSource(survey_year='2018', horizon='1-Year', survey='person')\n", "data = data_source.get_data(states=[\"CA\"], download=True)\n", "definition_df = data_source.get_definitions(download=True)\n", "categories = generate_categories(features=ACSIncome.features, definition_df=definition_df)\n", "df_feat, df_labels, _ = ACSIncome.df_to_pandas(data, categories=categories, dummies=True)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:06:03.074297800Z", "start_time": "2024-07-23T15:05:47.737499700Z" } }, "id": "5aad391248c4779d" }, { "cell_type": "markdown", "source": [ "We'll consider three types of sensitive features: SEX (binary), RAC1P (categorical), and AGEP (continuous).\n", "\n", "Their values look like this:" ], "metadata": { "collapsed": false }, "id": "547a8ba4a90a4e1b" }, { "cell_type": "code", "execution_count": 2, "outputs": [ { "data": { "text/plain": " AGEP SEX_Female SEX_Male RAC1P_Alaska Native alone \\\n0 30 False True False \n1 21 False True False \n2 65 False True False \n3 33 False True False \n4 18 True False False \n\n RAC1P_American Indian alone \\\n0 False \n1 False \n2 False \n3 False \n4 False \n\n RAC1P_American Indian and Alaska Native tribes specified; or American Indian or Alaska Native, not specified and no other races \\\n0 False \n1 False \n2 False \n3 False \n4 False \n\n RAC1P_Asian alone RAC1P_Black or African American alone \\\n0 False False \n1 False False \n2 False False \n3 False False \n4 False False \n\n RAC1P_Native Hawaiian and Other Pacific Islander alone \\\n0 False \n1 False \n2 False \n3 False \n4 False \n\n RAC1P_Some Other Race alone RAC1P_Two or More Races RAC1P_White alone \n0 True False False \n1 False False True \n2 False False True \n3 False False True \n4 False False True ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
AGEPSEX_FemaleSEX_MaleRAC1P_Alaska Native aloneRAC1P_American Indian aloneRAC1P_American Indian and Alaska Native tribes specified; or American Indian or Alaska Native, not specified and no other racesRAC1P_Asian aloneRAC1P_Black or African American aloneRAC1P_Native Hawaiian and Other Pacific Islander aloneRAC1P_Some Other Race aloneRAC1P_Two or More RacesRAC1P_White alone
030FalseTrueFalseFalseFalseFalseFalseFalseTrueFalseFalse
121FalseTrueFalseFalseFalseFalseFalseFalseFalseFalseTrue
265FalseTrueFalseFalseFalseFalseFalseFalseFalseFalseTrue
333FalseTrueFalseFalseFalseFalseFalseFalseFalseFalseTrue
418TrueFalseFalseFalseFalseFalseFalseFalseFalseFalseTrue
\n
" }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sens_cols = [col for col in df_feat.columns if (col.split('_')[0] in ['SEX', 'RAC1P', 'AGEP'])]\n", "df_feat[sens_cols].head()" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:06:03.140372500Z", "start_time": "2024-07-23T15:06:03.074166700Z" } }, "id": "fbfcf03d56d7757e" }, { "cell_type": "code", "execution_count": 3, "outputs": [], "source": [ "feat = df_feat.drop(columns=sens_cols).to_numpy(dtype=\"float\")\n", "sens = df_feat[sens_cols].to_numpy(dtype=\"float\")\n", "label = df_labels.to_numpy(dtype=\"float\")" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:06:09.911034200Z", "start_time": "2024-07-23T15:06:03.132672800Z" } }, "id": "8140169aecea986b" }, { "cell_type": "markdown", "source": [ "Like in [Simple Pipeline.ipynb](./Simple Pipeline.ipynb), we just treat sensitive features in the same way 'normal' features are always treated in PyTorch: as (N x D) tensors, where N is the number of samples and D the dimensionality. The only difference is that we now have a **mix of continuous and categorical sensitive features**. All other steps remain the same!" ], "metadata": { "collapsed": false }, "id": "62be1fd216fac319" }, { "cell_type": "code", "execution_count": 4, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape of the 'normal' features tensor: torch.Size([195665, 804])\n", "Shape of the sensitive features tensor: torch.Size([195665, 12])\n", "Shape of the labels tensor: torch.Size([195665, 1])\n" ] } ], "source": [ "import torch\n", "torch.manual_seed(0)\n", "feat, sens, label = torch.tensor(feat).float(), torch.tensor(sens).float(), torch.tensor(label).float()\n", "print(f\"Shape of the 'normal' features tensor: {feat.shape}\")\n", "print(f\"Shape of the sensitive features tensor: {sens.shape}\")\n", "print(f\"Shape of the labels tensor: {label.shape}\")" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:06:13.086314100Z", "start_time": "2024-07-23T15:06:09.906335600Z" } }, "id": "88c3bf10d3c396a9" }, { "cell_type": "markdown", "source": [ "## A naive PyTorch pipeline" ], "metadata": { "collapsed": false }, "id": "a6954d8968e4fc7f" }, { "cell_type": "code", "execution_count": 5, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0, loss: 0.5894676046445966\n", "Epoch: 1, loss: 0.45432546191538375\n", "Epoch: 2, loss: 0.42644635944937664\n", "Epoch: 3, loss: 0.41861366961772245\n", "Epoch: 4, loss: 0.4148668508666257\n", "Epoch: 5, loss: 0.41254297791359323\n", "Epoch: 6, loss: 0.4108568604569882\n", "Epoch: 7, loss: 0.409562521148473\n", "Epoch: 8, loss: 0.4085248096380383\n", "Epoch: 9, loss: 0.40770633627350134\n", "Epoch: 10, loss: 0.40696429484523833\n", "Epoch: 11, loss: 0.4062801259569824\n", "Epoch: 12, loss: 0.405580735920618\n", "Epoch: 13, loss: 0.4048566308338195\n", "Epoch: 14, loss: 0.4040601346641779\n", "Epoch: 15, loss: 0.40290021896362305\n", "Epoch: 16, loss: 0.4015411910756181\n", "Epoch: 17, loss: 0.4003351483649264\n", "Epoch: 18, loss: 0.3992322162569811\n", "Epoch: 19, loss: 0.3981786568959554\n", "Epoch: 20, loss: 0.39722149074077606\n", "Epoch: 21, loss: 0.39636922037849825\n", "Epoch: 22, loss: 0.3955736063265552\n", "Epoch: 23, loss: 0.3948506594557936\n", "Epoch: 24, loss: 0.39417379527973634\n" ] } ], "source": [ "import numpy as np\n", "from torch.utils.data import TensorDataset, DataLoader\n", "\n", "h_layer_dim = 16\n", "lr = 1e-3\n", "batch_size = 1024\n", "nb_epochs = 25\n", "\n", "model = torch.nn.Sequential(\n", " torch.nn.Linear(feat.shape[1], h_layer_dim),\n", " torch.nn.ReLU(),\n", " torch.nn.Linear(h_layer_dim, 1)\n", ")\n", "optimizer = torch.optim.Adam(model.parameters(), lr=lr)\n", "dataset = TensorDataset(feat, sens, label)\n", "dataloader = DataLoader(dataset, batch_size=batch_size)\n", "\n", "for epoch in range(nb_epochs):\n", " losses = []\n", " for batch_feat, batch_sens, batch_label in dataloader:\n", " optimizer.zero_grad()\n", " \n", " logit = model(batch_feat)\n", " loss = torch.nn.functional.binary_cross_entropy_with_logits(logit, batch_label)\n", " loss.backward()\n", " \n", " optimizer.step()\n", " losses.append(loss.item())\n", " print(f\"Epoch: {epoch}, loss: {np.mean(losses)}\")" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:07:52.813598400Z", "start_time": "2024-07-23T15:06:13.086314100Z" } }, "id": "c606ef4196a662c9" }, { "cell_type": "markdown", "source": [ "## Multi-dimensional bias analysis\n", "\n", "Can we detect any statistical disparities (biases) in the naive model, with respect to our mix of sensitive attributes?\n", "\n", "Instead of considering the pairwise gaps between the statistics of groups, we can approach the problem more generally by setting a target value for the statistic. Luckily, all LinearFractionalStatistics in `fairret` have a principled candidate for such a value: the overall statistic, which considers the entire dataset as a single 'group'. The TruePositiveRate is such a LinearFractionalStatistic." ], "metadata": { "collapsed": false }, "id": "85ea660c0b0f79d6" }, { "cell_type": "code", "execution_count": 6, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The TruePositiveRate for group AGEP is 0.6951881051063538\n", "The TruePositiveRate for group SEX_Female is 0.6863165497779846\n", "The TruePositiveRate for group SEX_Male is 0.7048059105873108\n", "The TruePositiveRate for group RAC1P_Alaska Native alone is 0.7878805994987488\n", "The TruePositiveRate for group RAC1P_American Indian alone is 0.6357859373092651\n", "The TruePositiveRate for group RAC1P_American Indian and Alaska Native tribes specified; or American Indian or Alaska Native, not specified and no other races is 0.6129217147827148\n", "The TruePositiveRate for group RAC1P_Asian alone is 0.7354669570922852\n", "The TruePositiveRate for group RAC1P_Black or African American alone is 0.6464908123016357\n", "The TruePositiveRate for group RAC1P_Native Hawaiian and Other Pacific Islander alone is 0.5953413248062134\n", "The TruePositiveRate for group RAC1P_Some Other Race alone is 0.507019579410553\n", "The TruePositiveRate for group RAC1P_Two or More Races is 0.6937863230705261\n", "The TruePositiveRate for group RAC1P_White alone is 0.705863893032074\n", "The overall TruePositiveRate is tensor([0.6974], grad_fn=)\n", "The maximal absolute difference is 0.1903666853904724\n" ] } ], "source": [ "from fairret.statistic import TruePositiveRate\n", "\n", "statistic = TruePositiveRate()\n", "\n", "naive_pred = torch.sigmoid(model(feat))\n", "naive_stat_per_group = statistic(naive_pred, sens, label)\n", "naive_overall_stat = statistic.overall_statistic(naive_pred, label).squeeze().item()\n", "naive_absolute_diff = torch.abs(naive_stat_per_group - naive_overall_stat)\n", "\n", "for i, col in enumerate(sens_cols):\n", " print(f\"The {statistic.__class__.__name__} for group {col} is {naive_stat_per_group[i]}\")\n", "print(f\"The overall {statistic.__class__.__name__} is {statistic.overall_statistic(naive_pred, label)}\")\n", "print(f\"The maximal absolute difference is {torch.max(naive_absolute_diff)}\")" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:07:52.957765400Z", "start_time": "2024-07-23T15:07:52.816015200Z" } }, "id": "d6f409252d0a016a" }, { "cell_type": "markdown", "source": [ "As we can see, the biggest outlier in TruePositiveRate is the \"Some Other Race alone\" group. However, our fairrets should try to reduce all disparities.\n", "\n", "Note: the TruePositiveRate computed for the age as a 'group' may seem a bit strange, but it is quite interpretable. It is the rate at which actual positives are predicted as positive, weighed by their age. Hence, if age does not (linearly) influence whether the positive is a true positive, the statistic will be close to the overall statistic." ], "metadata": { "collapsed": false }, "id": "d03793575d22f45e" }, { "cell_type": "markdown", "source": [ "## Bias mitigation in fairret" ], "metadata": { "collapsed": false }, "id": "f063994330c1724f" }, { "cell_type": "code", "execution_count": 7, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0, loss: 0.8587691346183419\n", "Epoch: 1, loss: 0.7747252158199748\n", "Epoch: 2, loss: 0.7440257190416256\n", "Epoch: 3, loss: 0.7302185222506523\n", "Epoch: 4, loss: 0.723417630729576\n", "Epoch: 5, loss: 0.7181567416215936\n", "Epoch: 6, loss: 0.7141167384882768\n", "Epoch: 7, loss: 0.711620382964611\n", "Epoch: 8, loss: 0.7090622059380015\n", "Epoch: 9, loss: 0.7072434027989706\n", "Epoch: 10, loss: 0.7041833276549975\n", "Epoch: 11, loss: 0.7031577831755081\n", "Epoch: 12, loss: 0.70156757440418\n", "Epoch: 13, loss: 0.7001269410053889\n", "Epoch: 14, loss: 0.6993842964681486\n", "Epoch: 15, loss: 0.6980737828028699\n", "Epoch: 16, loss: 0.6973260877033075\n", "Epoch: 17, loss: 0.6958203539252281\n", "Epoch: 18, loss: 0.6948677546655139\n", "Epoch: 19, loss: 0.6939027289239069\n", "Epoch: 20, loss: 0.6936575947329402\n", "Epoch: 21, loss: 0.691608909672747\n", "Epoch: 22, loss: 0.690773538624247\n", "Epoch: 23, loss: 0.6903554652817547\n", "Epoch: 24, loss: 0.6890416747579972\n" ] } ], "source": [ "from fairret.loss import NormLoss\n", "\n", "norm_loss = NormLoss(statistic)\n", "fairness_strength = 0.1\n", "model = torch.nn.Sequential(\n", " torch.nn.Linear(feat.shape[1], h_layer_dim),\n", " torch.nn.ReLU(),\n", " torch.nn.Linear(h_layer_dim, 1)\n", ")\n", "optimizer = torch.optim.Adam(model.parameters(), lr=lr)\n", "\n", "for epoch in range(nb_epochs):\n", " losses = []\n", " for batch_feat, batch_sens, batch_label in dataloader:\n", " optimizer.zero_grad()\n", " \n", " logit = model(batch_feat)\n", " loss = torch.nn.functional.binary_cross_entropy_with_logits(logit, batch_label)\n", " loss += fairness_strength * norm_loss(logit, batch_sens, batch_label)\n", " loss.backward()\n", " \n", " optimizer.step()\n", " losses.append(loss.item())\n", " print(f\"Epoch: {epoch}, loss: {np.mean(losses)}\")" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:09:57.518814300Z", "start_time": "2024-07-23T15:07:52.958985600Z" } }, "id": "4268b8b24114805d" }, { "cell_type": "markdown", "source": [ "Let's check the true positive rate per group again..." ], "metadata": { "collapsed": false }, "id": "1f544ff6b8925f6a" }, { "cell_type": "code", "execution_count": 8, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The TruePositiveRate for group AGEP is 0.6903698444366455\n", "The TruePositiveRate for group SEX_Female is 0.6866227388381958\n", "The TruePositiveRate for group SEX_Male is 0.6959303021430969\n", "The TruePositiveRate for group RAC1P_Alaska Native alone is 0.7395374774932861\n", "The TruePositiveRate for group RAC1P_American Indian alone is 0.6677444577217102\n", "The TruePositiveRate for group RAC1P_American Indian and Alaska Native tribes specified; or American Indian or Alaska Native, not specified and no other races is 0.6708988547325134\n", "The TruePositiveRate for group RAC1P_Asian alone is 0.6986129283905029\n", "The TruePositiveRate for group RAC1P_Black or African American alone is 0.674475908279419\n", "The TruePositiveRate for group RAC1P_Native Hawaiian and Other Pacific Islander alone is 0.665993332862854\n", "The TruePositiveRate for group RAC1P_Some Other Race alone is 0.5838647484779358\n", "The TruePositiveRate for group RAC1P_Two or More Races is 0.6922767162322998\n", "The TruePositiveRate for group RAC1P_White alone is 0.7005200982093811\n", "The overall TruePositiveRate is tensor([0.6922], grad_fn=)\n", "The maximal absolute difference is 0.1083303689956665\n" ] } ], "source": [ "pred = torch.sigmoid(model(feat))\n", "stat_per_group = statistic(pred, sens, label)\n", "overall_stat = statistic.overall_statistic(pred, label).squeeze().item()\n", "absolute_diff = torch.abs(stat_per_group - overall_stat)\n", "\n", "for i, col in enumerate(sens_cols):\n", " print(f\"The {statistic.__class__.__name__} for group {col} is {stat_per_group[i]}\")\n", "print(f\"The overall {statistic.__class__.__name__} is {statistic.overall_statistic(pred, label)}\")\n", "print(f\"The maximal absolute difference is {torch.max(absolute_diff)}\")" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:09:57.624592300Z", "start_time": "2024-07-23T15:09:57.523224800Z" } }, "id": "ff9f8d0fe5247a6a" }, { "cell_type": "markdown", "source": [ "With a small change, the maximal absolute difference between the statistics was reduced from 19% to 11%!\n", "\n", "In fact, all disparities were reduced:" ], "metadata": { "collapsed": false }, "id": "7217872a34eaf3bc" }, { "cell_type": "code", "execution_count": 9, "outputs": [ { "data": { "text/plain": "" }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": "
", "image/png": "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MWrUKHTo0AEA0LJlS0RFRQEAqlSpguXLl+PAgQPo3LkzDhw4gKVLl8LGxkbM+ERERCQRoq4UbGJigtDQUISGhmpdduPGDY3fnZ2dsWnTprKKRkRERDLCzSmJiOg/7002XM2XmysgN1cmo23fQSxoiIjoP02pVMCyggmUBVajfx25KhVSUp+zqBEJCxoiIvpPUyoVUOrp4fGmSch+HPtat2FgXQvWXrOhVCpY0IiEBQ0RERGA7MexyH54XewY9JqksVISERER0RtgQUNERESyx4KGiIiIZI8FDREREckeCxoiIiKSPRY0REREJHssaIiIiEj2WNAQERGR7LGgISIiItljQUNERESyx4KGiIiIZI8FDREREckeCxoiIiKSPRY0REREJHssaIiIiEj2WNAQERGR7LGgISIiItljQUNERESyx4KGiIiIZI8FDREREcneaxU0W7duhZeXF1xcXBAfH4/g4GAsXbq0tLMRERERlYjOBc26deswZ84ceHl5ITs7GwBQv359/PLLLwgLCyv1gERERESvonNBExERgaCgIPTt2xdKZd7Vu3Xrhjlz5mDDhg2lHpCIiIjoVXQuaBISElC7dm2t49WqVUNqamppZCIiIiLSic4FTYMGDRAZGalxTBAEhIeHw9HRsbRyEREREZWYvq5XmDJlCnx8fHDw4EFkZWVh+vTpuHPnDl68eIFly5a9jYxERERExdK5oPn444+xa9cubNu2Dbdu3YJKpYKbmxu6du2K8uXLv42MRERERMXSuaDx8/ODv78/unfvrnH86dOnGD16NBYtWlRq4YiIiIhKokQFzfnz53H37l0AQGRkJOzt7WFqaqrRJjY2FkePHi39hERERESvUKKCxsTEBIsXL4YgCBAEAcuXL1dP2QYAhUKBcuXKYfz48TrdeWZmJqZPn47du3fD2NgYgwYNwqBBgwptO3z4cOzfv1/j2JIlS9CuXTud7pOIiIjePSUqaGxtbbFv3z4AgLe3N8LCwmBhYfHGdz5nzhxcuXIFq1atQkJCAiZOnIjKlSujY8eOWm1v3bqFuXPn4pNPPlEfK40MREQkf0qlAkql4rWuq6fHXYDeBTqPoYmIiCj0eFZWFq5fv44GDRqU6HYyMjKwYcMGLFu2DPb29rC3t0dMTAzWrl2rVdBkZWXh3r17cHBwwHvvvadrZCIieocplQpUqFCOhcl/nM4Fzfnz5xEYGIibN28iNzdX4zI9PT1cuXKlRLcTHR2NnJwcODk5qY85OztjyZIlyM3N1TilFRsbC4VCgWrVqukal4iI3nFKpQJ6ekpMWXcEtxOf6nz95nUr42v3Rm8hGZUlnQuamTNnokqVKhg/fjzGjBmDOXPm4NGjRwgLC8PUqVNLfDtJSUmwtLSEoaGh+pi1tTUyMzORmpqKihUrqo/HxsbC1NQUvr6+OHXqFD744AOMGjUKbdq00TU+FK/XI/nWSTVXQXLICMgjJzOWHjnkZMbSU1zO24lPEX3/ic63WeM98zdIpE0Oj6UcMgJ5OUuaVeeCJiYmBnPnzkXt2rVhb28PAwMD9OnTB1ZWVli2bBk8PDxKdDvPnz/XKGYAqH/PysrSOB4bG4sXL16gZcuW8PHxwZ49ezB8+HCsX78eDg4OOuW3sjLTqX1ZsLSU/vo9csgIyCMnM5YeOeRkxtIjh5zMWHp0zalzQWNiYgI9PT0AQK1atXDjxg20adMGjo6OuH37dolvx8jISKtwyf/d2NhY4/iIESPg7e2tHgRsa2uLq1ev4vfff9e5oElO/geCkDcITCpPakpKOlSqXK3jcsgIyCMnM+qGz3fpkXNGQB45mVE3cnu+FYqSdUboPIKqWbNmmD9/Ph49egQnJydERUUhNTUV+/fvh7l5ybvtbGxskJKSgpycHPWxpKQkGBsba92OUqnUmtFUq1YtPHr0SNf4EIS8H6nJz1XwR2oKyyiXnFIj14xyySk1cs0ol5xSI9eMUs5ZEjoXNP7+/nj69Cl2796NTp06wdTUFM2aNcOsWbPw9ddfl/h27OzsoK+vjwsXLqiPnT17Fg4ODhoDggFg0qRJ8PPz0zgWHR2NWrVq6RqfiIiI3kE6n3KKj4/HsmXLYGRkBCBvGvfNmzdhbm4OGxubEt+OiYkJPD09ERgYiJCQECQmJiI8PByzZs0CkNdbY2ZmBmNjY7i6umLcuHFo2rQpnJycsG3bNpw9exYzZszQNT4RERG9g3Tuofn66681xsooFArUqVNHp2Imn5+fH+zt7dG/f39Mnz4do0aNQocOHQAALVu2RFRUFACgQ4cOCAgIwE8//YTOnTtj//79WL58OapWrarzfRIREdG7R+cemjp16uDSpUuwtbV94zs3MTFBaGgoQkNDtS67ceOGxu89evRAjx493vg+iYiI6N2jc0FjYWGBgIAALFq0CFWrVtWaer169epSC0dERERUEjoXNHZ2drCzs3sbWYiIiIhei84FzciRI0vUzsfHB0FBQXj//fd1DkVERESki7e2k9fp06eRmZn5tm6eiIiISI1bkxIREZHssaAhIiIi2WNBQ0RERLLHgoaIiIhkjwUNERERyR4LGiIiIpK91y5o0tLScO3aNWRlZSEtLU3r8tDQUFhbW79ROCIiIqKS0LmgyczMxJQpU9CkSRN0794djx49wqRJkzB48GA8ffpU3a5Dhw4wMTEp1bBEREREhdG5oJk7dy5u3ryJzZs3w8jICAAwatQopKSkICgoqNQDEhEREb2KzgXN7t274e/vj7p166qP1a1bFzNnzsThw4dLNRwRERFRSehc0KSnpxd6Kik3NxcqlapUQhERERHpQueCxtXVFd99953GQOD4+HgEBQWhTZs2pRqOiIiIqCR0LmimTZsGpVKJJk2a4Pnz5/j888/RoUMHmJubY+rUqW8jIxEREVGx9HW9gpmZGRYvXoy4uDjExsYiJycHNWvWRO3atd9GPiIiIqJX0rmgGTRoEDp16oRPP/0Ubdu2fQuRiIiIiHSj8ymn+vXrY9myZWjRogWGDRuGrVu3Ij09/W1kIyIiIioRnQuacePGYefOndi4cSPs7e2xbNkyNG/eHKNHj8bOnTvfRkYiIiKiYul8yilf3bp1UbduXQwYMAC//vorlixZgj179qBjx46lmY+IiIjolV6roHny5An27duH3bt346+//sJHH32EYcOGoVOnTqWdj4iIiOiVdC5ovL29ce7cOVSvXh0eHh7w8/NDrVq13kY2IiIiohLRuaBp2LAh/P39YWtr+zbyEBEREemsRAVNQkICKlWqBIVCgd69e6uPFaZy5cqll46IiIioBEpU0Li6uuLYsWOwsrKCq6srFAoFBEGAQqFQt8n//fr1628tLBEREVFhSlTQ7Nu3D5aWlup/ExEREUlJidahqVKlCpTKvKZ+fn4wMzNDlSpVNH5MTEwwatSotxqWiIiIqDAl6qE5fPgwLl26BAA4ffo0lixZgnLlymm0uXv3Lu7fv1/6CYmIiIheoUQFTc2aNbF8+XIIggBBEHDu3DkYGBioL1coFChXrhyCg4PfWlAiIiKiopSooKlWrRpWr14NIO+Uk7+/P0xNTd9qMCIiIqKS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np5SMk9qSko6VCrtcUNyyAjIIycz6obPd+mRc0ZAHjmZUTdye74VipJ1Rog2hsbOzg76+vq4cOGC+tjZs2fh4OAApfLtxRKEvB+pyc9V8EdqCssol5xSI9eMcskpNXLNKJecUiPXjFLOWRKiFTQmJibw9PREYGAgLl26hL179yI8PBz9+vUDkNdb8+LFC7HiERERkYyIulKwn58f7O3t0b9/f0yfPh2jRo1Sz2Rq2bIloqKixIxHREREMiHqSsEmJiYIDQ1FaGio1mU3btwo9DpeXl7w8vJ629GIiIhIRrg5JREREckeCxoiIiKSPRY0REREJHssaIiIiEj2WNAQERGR7LGgISIiItljQUNERESyx4KGiIiIZI8FDREREckeCxoiIiKSPRY0REREJHssaIiIiEj2WNAQERGR7LGgISIiItljQUNERESyx4KGiIiIZI8FDREREckeCxoiIiKSPRY0REREJHssaIiIiEj2WNAQERGR7LGgISIiItljQUNERESyx4KGiIiIZI8FDREREckeCxoiIiKSPRY0REREJHssaIiIiEj2WNAQERGR7LGgISIiItljQUNERESyx4KGiIiIZI8FDREREcmeqAVNZmYmJk+eDBcXF7Rs2RLh4eFFtr127Rp69OiBBg0a4PPPP8eVK1fKMCkRERFJmagFzZw5c3DlyhWsWrUKAQEBCAsLw86dO7XaZWRkwMfHBy4uLti0aROcnJwwdOhQZGRkiJCaiIiIpEa0giYjIwMbNmyAv78/7O3t8emnn2LIkCFYu3atVtuoqCgYGRnB19cXtWvXhr+/P8qXL19o8UNERET/PaIVNNHR0cjJyYGTk5P6mLOzMy5evIjc3FyNthcvXoSzszMUCgUAQKFQoFGjRrhw4UJZRiYiIiKJ0hfrjpOSkmBpaQlDQ0P1MWtra2RmZiI1NRUVK1bUaPvRRx9pXN/KygoxMTE6369SCQjCv7/bVq4IE0PdH4bq75sDAAw/sIPCwETn6wOAgVUNjVxFed2MwJvnLGlG4N1+LOWQEeDz/bJ3OSPA5/tl73JG4L/7fP9/X8YrKQSh4Md72YmMjMTChQtx4MAB9bH4+Hi0b98ehw4dwgcffKA+3r9/fzg7O2P06NHqYwsXLsT58+excuXKsoxNREREEiTaKScjIyNkZWVpHMv/3djYuERtX25HRERE/02i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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "\n", "short_sens_cols = [col[:30] for col in sens_cols]\n", "df = pd.DataFrame({\n", " 'kind': ['naive'] * len(sens_cols) + ['fairret'] * len(sens_cols),\n", " 'true_positive_rate': np.concatenate([naive_stat_per_group.detach(), stat_per_group.detach()]),\n", " 'sensitive_feature': np.concatenate([short_sens_cols, short_sens_cols])\n", "})\n", "sns.barplot(data=df, x='sensitive_feature', y='true_positive_rate', hue='kind')\n", "plt.axhline(y=overall_stat, color='black', linestyle='--')\n", "plt.gca().tick_params(axis='x', rotation=90)\n", "plt.legend(ncols=2)\n" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-07-23T15:09:58.038205600Z", "start_time": "2024-07-23T15:09:57.627716600Z" } }, "id": "b1815b5326966d2b" } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }